Modern computer chips consist of one or more processors (CPUs) along with some shared and private caches and memories. In addition, all modern embedded computer chips contain multiple input-output units to move data in and out of the processor at a high speed. These chips typically go into devices such as the cell phones, all kinds of consumer and media devices like video and music players to modern television appliances, medical devices, automobiles, global positioning systems, communication devices, satellites, and remote sensing equipment.
The nature of computing varies widely between the various applications. Targeting the same chip for a wide variety of applications would result in a great mismatch between what is needed for an application versus what the chip offers. This usually results in either an under utilization of the processing resources in the chip, thus over-paying in terms of price and operational details, such as higher power consumption than needed, or insufficient processing power for the task at hand forcing the vendor to offer an inferior product to the market. ASICs or ASIPs bring in the customization capability to build a custom IC for a particular application at hand. But that is the one and only application the IC can perform. Designing an ASIP brings in all the advantages of power and a perfect match of the computation power, but is an expensive and time consuming solution. It takes dozens of man years, and several tens of millions of dollars to design an ASIP, that is used for just one application.
Normally the chip design process begins when algorithm designers specify all the functionality that the chip must perform. This is usually done in a language like C or Matlab. A team of chip specialists, tools engineers, verification engineers and firmware engineers then work many man-years to map the algorithm to a hardware chip and associated firmware. The team can use an off-the-shelf processor, which is proven but may have performance limitations because the standard architecture may not fit well with the algorithm.
The alternative is to design a custom architecture and custom hardware to achieve high performance for the desired algorithm. A computer architecture is a detailed specification of the computational, communication, and data storage elements (hardware) of a computer system, how those components interact (machine organization), and how they are controlled (instruction set). A machine's architecture determines which computations can be performed most efficiently, and which forms of data organization and program design will perform optimally.
The custom chip approach is a very expensive process and also fraught with risks from cost-overruns to technical problems. Developing cutting-edge custom IC designs introduces many issues that need to be resolved. Higher processing speeds have introduced conditions into the analog domain that were formerly purely digital in nature, such as multiple clock regions, increasingly complex clock multiplication and synchronization techniques, noise control, and high-speed I/O.
Another effect of increased design complexity is the additional number of production turns that may be needed to achieve a successful design. Yet another issue is the availability of skilled workers. The rapid growth in ASIC circuit design has coincided with a shortage of skilled IC engineers.